import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.MatteBorder;

@SuppressWarnings("serial")
public class Simulacion extends JFrame {
	private int Venx, Veny;

	private JMenuBar jmb_barra;

	private JMenu jm_archivo;

//	private JMenuItem jmi_abrir;
	private JMenuItem jmi_salir;
	private JMenuItem jmi_imprimir;
	private JMenuItem jmi_iniciar;
	private JMenuItem jmi_nuevo;
	private JMenuItem jmi_detener;
	//private JMenuItem jmi_guardar;

	private JMenu jm_reportes;

	private JMenu jm_diagrama_sistema;
	private JMenu jm_diagrama_caja;
	private JMenu jm_diagrama__TA;
	private JMenu jm_diagrama__Telefono;
	private JMenu jm_diagrama__Apostador;

	private JMenuItem jmi_torta_sistema;
	private JMenuItem jmi_barra_sistema;

	
	private JMenuItem jmi_torta_telefono;
	private JMenuItem jmi_barra_telefono;
	
	private JMenuItem jmi_torta_apostador;
	private JMenuItem jmi_barra_apostador;
	
	private JMenuItem jmi_torta_caja;
	private JMenuItem jmi_barra_caja;

	private JMenuItem jmi_torta_TA;
	private JMenuItem jmi_barra_TA;

	private JMenu jm_ayuda;

	//private JMenuItem jmi_ayuda_datos;
	private JMenuItem jmi_ayuda_ciudadanos;
	private JMenuItem jmi_ayuda_reportes;
	//private JMenuItem jmi_ayuda_dias;
	private JMenuItem jmi_ayuda_botones;

	private JMenuItem jmi_quienes_somos;
	private JMenuItem jmi_version;

	private JButton jb_iniciar;
	private JButton jb_detener;
	private JButton jb_nuevo;

	private JLabel jl_dias;
	private JComboBox jcb_dias;
	private String[] dias = { "Lunes", "Martes", "Miercoles", "Jueves",
			"Viernes" };

	private JLabel jl_horas_inicio;
	private JLabel jl_horas_fin;
	private JLabel jl_am_pm;
	private JComboBox jcb_horas_inicio;
	private JComboBox jcb_horas_fin;
	private String[]  horas_inicio = { "8", "9", "10", "11", "14", "15", "16" };
	private String[] horas_fin = { "9", "10", "11", "12", "15", "16", "17" };

	private JLabel nroCasos;
	private JComboBox combo;
	private String[] casos={"1","2","3","4","5"};
	
	private JTabbedPane jtp_fondo;
	private JScrollPane jsp_fondo;
	private JLabel jl_fondo;
	
	private ImageIcon imagen_fondo;
	private ImageIcon imagen_ciudadano;

	private JTabbedPane jtp_reportes;
	
	

	
	
	
	private JPanel jp_panel_reportes;
	private JTable jt_tabla_reportes;
	private JScrollPane jsp_reportes;
	
	/*modificando*/
	private JPanel jp2_panel_reportes;
	private JTable jt2_tabla_reportes;
	private JScrollPane jsp2_reportes;
	
	private JPanel jp3_panel_reportes;
	private JTable jt3_tabla_reportes;
	private JScrollPane jsp3_reportes;
	/*modificando*/
	
	private JPanel jp4_panel;
	private JTextArea jt4_texto;
	private JScrollPane jsp4_texto;
	
	private Color color;
	private MatteBorder borde;
	
	private JButton jb_imprimir;

	private Reporte reportes;
	ReporteCaja repoCaja;
	ReporteTomador repoTom;
	
	
	private Evento evento;
	private Reloj reloj;

	private ImageIcon imagen_guardar;
	private ImageIcon imagen_abrir;
	private ImageIcon imagen_iniciar;
	private ImageIcon imagen_nuevo;
	private ImageIcon imagen_detener;
	private ImageIcon imagen_reporte;
	private ImageIcon imagen_impri1;
	private ImageIcon imagen_salir;
	
	
	private JLabel ayuda;
	private ImageIcon imagenAyuda;
	

	private JLabel jl_velocidad_simulacion;
	
	private JSlider slider;
	
	
	

	
	
	public Simulacion() {
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setTitle("SIMULACION DE APUESTAS BASADAS EN COLAS");
		setLayout(null);

		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
		Venx = (int) dimension.getWidth();
		Veny = (int) dimension.getHeight();

		setSize(Venx, Veny);

		crear_Imagenes();
		crear_Menus();
		crear_Botones();
		crear_Dias();
		crear_Reloj();
		crear_JLVelocidad();
				
		
		
		evento = new Evento();
		reportes = new Reporte();
		repoCaja=new ReporteCaja();
		repoTom=new ReporteTomador();
		ayuda=new JLabel();
		imagenAyuda=new ImageIcon("imagenes/ayuda.png");
		ayuda.setIcon(imagenAyuda);
		ayuda.setBounds(1015,30,200,200);
		add(ayuda);

		crear_Fondo();
		
		crear_Reportes();
		
		evento.establecer(jl_fondo, jl_horas_fin, jl_am_pm, jb_iniciar,
				jmi_iniciar, jt_tabla_reportes, jcb_dias, jcb_horas_inicio,
				jcb_horas_fin, jb_imprimir, jmi_imprimir, this, jb_nuevo, jmi_nuevo,
				jmi_salir, jb_detener, jmi_nuevo,  slider,jm_diagrama_sistema,jm_diagrama_caja,jm_diagrama__TA,jmi_torta_sistema,jmi_barra_sistema,
				jmi_torta_caja,jmi_barra_caja,jmi_torta_TA,jmi_barra_TA, combo, imagen_fondo,jt2_tabla_reportes,jt3_tabla_reportes,
				jmi_ayuda_ciudadanos, jmi_ayuda_reportes, jmi_ayuda_botones, jmi_quienes_somos, jmi_version, jt4_texto,jm_diagrama__Apostador,jm_diagrama__Telefono, jmi_barra_telefono, jmi_torta_telefono, 
				jmi_barra_apostador, jmi_torta_apostador);

		setVisible(true);
	}
	

	public void crear_Imagenes() {

		imagen_guardar = new ImageIcon("imagenes/guardar_ed2.gif");
		imagen_abrir = new ImageIcon("imagenes/directorio.gif");
		imagen_iniciar = new ImageIcon("imagenes/Simular Trafico.gif");
		imagen_nuevo = new ImageIcon("imagenes/shoppinglist-icon.gif");
		imagen_detener = new ImageIcon("imagenes/Detener_.gif");
		imagen_impri1 = new ImageIcon("imagenes/print.gif");
		imagen_reporte = new ImageIcon("imagenes/Diagrama Barras.gif");
		imagen_salir = new ImageIcon("imagenes/salir.gif");
	}

	public void crear_Menus() {
		jmb_barra = new JMenuBar();

		jm_archivo = new JMenu("Archivo");

		jmi_nuevo = new JMenuItem("Nuevo", imagen_nuevo);
		jmi_iniciar = new JMenuItem("Iniciar", imagen_iniciar);
		jmi_detener = new JMenuItem("Detener", imagen_detener);
		//jmi_abrir = new JMenuItem("Abrir", imagen_abrir);
		jmi_salir = new JMenuItem("Salir", imagen_salir);
		//jmi_guardar = new JMenuItem("Guardar", imagen_guardar);
		jmi_imprimir = new JMenuItem("Imprimir Reporte", imagen_impri1);

		jm_reportes = new JMenu("Reportes");

		jm_diagrama_sistema = new JMenu("Reporte de Sistema");
		jm_diagrama_caja = new JMenu("Reporte de Caja");
		jm_diagrama__TA= new JMenu("Reporte Tomador de Apuestas");
		jm_diagrama__Telefono= new JMenu("Reporte de Telefono");
		jm_diagrama__Apostador= new JMenu("Reporte de Apostador");

		jmi_torta_sistema=new JMenuItem("Diagra. de Torta Sist.",imagen_reporte);
		jmi_barra_sistema=new JMenuItem("Diagra. de Barra sist.",imagen_reporte);
		
		jmi_torta_telefono=new JMenuItem("Diagra. de Barra Telefono",imagen_reporte);
		jmi_barra_telefono=new JMenuItem("Diagra. de Torta Telefono",imagen_reporte);
		
		jmi_torta_apostador=new JMenuItem("Diagra. de Barra Apostador",imagen_reporte);
		jmi_barra_apostador=new JMenuItem("Diagra. de Torta Apostador",imagen_reporte);

		jmi_torta_caja=new JMenuItem("Diagra. de Torta Caja",imagen_reporte);
		jmi_barra_caja=new JMenuItem("Diagra. de Barra Caja",imagen_reporte);

		jmi_torta_TA=new JMenuItem("Diagra.de Torta Tomador de Apuestas",imagen_reporte);
		jmi_barra_TA=new JMenuItem("Diagra. de Barra Tomador de Apuestas",imagen_reporte);

		jm_ayuda = new JMenu("Ayuda");
		//jmi_ayuda_datos = new JMenuItem("Como ingresar datos");
		jmi_ayuda_ciudadanos = new JMenuItem("Como iniciar la simulacion");
		jmi_ayuda_reportes = new JMenuItem("Reportes");
		//jmi_ayuda_dias = new JMenuItem("Dias");
		jmi_ayuda_botones = new JMenuItem("Botones");
		jmi_quienes_somos = new JMenuItem("QUIENES SOMOS?");
		jmi_version = new JMenuItem("VERSION");

	//	jm_archivo.add(jmi_abrir);
	//	jm_archivo.add(jmi_guardar);
		jm_archivo.addSeparator();
		jm_archivo.add(jmi_imprimir);
		jm_archivo.addSeparator();
		jm_archivo.add(jmi_iniciar);
		jm_archivo.add(jmi_nuevo);
		jm_archivo.add(jmi_detener);
		jm_archivo.addSeparator();
		jm_archivo.addSeparator();
		jm_archivo.add(jmi_salir);

		jm_diagrama_sistema.add(jmi_torta_sistema);
		jm_diagrama_sistema.add(jmi_barra_sistema);
		jm_diagrama_caja.add(jmi_torta_caja);
		jm_diagrama_caja.add(jmi_barra_caja);
		jm_diagrama__TA.add(jmi_torta_TA);
		jm_diagrama__TA.add(jmi_barra_TA);
		
		jm_diagrama__Telefono.add(jmi_torta_telefono);
		jm_diagrama__Telefono.add(jmi_barra_telefono);
		jm_diagrama__Apostador.add(jmi_torta_apostador);
		jm_diagrama__Apostador.add(jmi_barra_apostador);
		

		jm_reportes.add(jm_diagrama_sistema);
		jm_reportes.add(jm_diagrama_caja);
		jm_reportes.add(jm_diagrama__TA);
		jm_reportes.add(jm_diagrama__Telefono);
		jm_reportes.add(jm_diagrama__Apostador);


		//jm_ayuda.add(jmi_ayuda_datos);
		jm_ayuda.add(jmi_ayuda_ciudadanos);
		jm_ayuda.add(jmi_ayuda_reportes);
		//jm_ayuda.add(jmi_ayuda_dias);
		jm_ayuda.add(jmi_ayuda_botones);
		jm_ayuda.add(jmi_quienes_somos);
		jm_ayuda.add(jmi_version);

		jmb_barra.add(jm_archivo);
		jmb_barra.add(jm_reportes);
		jmb_barra.add(jm_ayuda);

		setJMenuBar(jmb_barra);

	}

	public void crear_Botones() {
		jb_iniciar = new JButton("Iniciar");
		jb_detener = new JButton("Detener");
		jb_nuevo = new JButton("Nuevo");

		jb_iniciar.setBounds(30, 5, 80, 20);
		jb_detener.setBounds(120, 5, 80, 20);
		jb_nuevo.setBounds(210, 5, 70, 20);

		add(jb_iniciar);
		add(jb_detener);
		add(jb_nuevo);
	}

	public void crear_Dias() {
		jl_dias = new JLabel("Dias:");
		jcb_dias = new JComboBox(dias);

		nroCasos=new JLabel("nro. de Casos:");
		combo=new JComboBox(casos);
		
		
		jl_horas_inicio = new JLabel("Hora Inicio:");
		jl_horas_fin = new JLabel("--      Hora Fin:");
		jl_am_pm = new JLabel(" --");
		jcb_horas_inicio = new JComboBox(horas_inicio);
		jcb_horas_fin = new JComboBox(horas_fin);

		jl_dias.setBounds(290, 5, 30, 20);
		jcb_dias.setBounds(320, 5, 85, 20);
		jl_horas_inicio.setBounds(425, 5, 65, 20);
		jcb_horas_inicio.setBounds(490, 5, 45, 20);
		jl_horas_fin.setBounds(540, 5, 90, 20);
		jcb_horas_fin.setBounds(625, 5, 45, 20);
		jl_am_pm.setBounds(675, 5, 40, 20);
		
		nroCasos.setBounds(1000, 5, 100, 25);
		combo.setBounds(1100, 5, 50, 25);

		add(jl_dias);
		add(jcb_dias);
		add(jl_horas_inicio);
		add(jl_horas_fin);
		add(jcb_horas_inicio);
		add(jcb_horas_fin);
		add(jl_am_pm);
		
		add(nroCasos);
		add(combo);
		
	}

	public void crear_Reloj() {
		reloj = new Reloj();
		reloj.init();
		reloj.start();
		reloj.setBounds(845, 57, 160, 130);
		add(reloj);
	}

	public void crear_Reportes() {
		jtp_reportes = new JTabbedPane();
		jp_panel_reportes = new JPanel();
		jsp_reportes = new JScrollPane();
		jt_tabla_reportes = reportes.getReporte();

		jtp_reportes.addTab(" ", imagen_ciudadano, jp_panel_reportes,
				"muestra el reporte de los entradas y salidas ");
		jtp_reportes.setBounds(835, 190, 420, 480);
		jtp_reportes.setBackground(Color.WHITE);
		
		
				
		add(jtp_reportes);

		jp_panel_reportes.setLayout(null);
		
		jp_panel_reportes.setBorder(BorderFactory
				.createTitledBorder(" Panel de Reportes  "));

		jsp_reportes.setBounds(5, 20, 180, 450);
		jsp_reportes.setViewportView(jt_tabla_reportes);
		jp_panel_reportes.add(jsp_reportes);

		jb_imprimir = new JButton("Imprimir");
		jb_imprimir.setBounds(20, 413, 150, 22);
		//jp_panel_reportes.add(jb_imprimir);
		crea_reporteCaja(jtp_reportes);
		crea_reporteTomador(jtp_reportes);
		crearTexto(jtp_reportes);
	}
	public void crea_reporteCaja(JTabbedPane jtp_reportes){
		
		jp2_panel_reportes = new JPanel();
		jsp2_reportes = new JScrollPane();
		jt2_tabla_reportes = repoCaja.getReporteCaja();
		
		
		jtp_reportes.add(jp2_panel_reportes);
		
		jp2_panel_reportes.setLayout(null);
		
		jp2_panel_reportes.setBorder(BorderFactory
				.createTitledBorder(" Panel de Reportes de caja  "));
		
		jsp2_reportes.setBounds(5, 20, 415, 450);
		jsp2_reportes.setViewportView(jt2_tabla_reportes);
		jp2_panel_reportes.add(jsp2_reportes);
	}
	public void crea_reporteTomador(JTabbedPane jtp_reportes){
		
		jp3_panel_reportes = new JPanel();
		jsp3_reportes = new JScrollPane();
		jt3_tabla_reportes = repoTom.getReporteTomador();
		
		
		jtp_reportes.add(jp3_panel_reportes);
		
		jp3_panel_reportes.setLayout(null);
		
		jp3_panel_reportes.setBorder(BorderFactory
				.createTitledBorder(" Panel de Reportes de Tomador  "));
		
		jsp3_reportes.setBounds(5, 20, 415, 450);
		jsp3_reportes.setViewportView(jt3_tabla_reportes);
		jp3_panel_reportes.add(jsp3_reportes);
	}
	public void crearTexto(JTabbedPane jtp_reportes){
		jp4_panel=new JPanel();
		jt4_texto=new JTextArea();
		jsp4_texto=new JScrollPane(jt4_texto);
		color=color.black;
		borde=new MatteBorder(4,4,4,4,color);
		jt4_texto.setBorder(borde);	
		jtp_reportes.add(jp4_panel);
		jp4_panel.setLayout(null);
		jp4_panel.setBorder(BorderFactory.createTitledBorder("panel de reportes"));
		jsp4_texto.setBounds(5,20,410,430);
		jp4_panel.add(jsp4_texto);
	}

	public void crear_Fondo() {
		
		jtp_fondo = new JTabbedPane();
		imagen_fondo = new ImageIcon("imagenes/fondos/fondo1.gif");
		jl_fondo = new JLabel();
		jl_fondo.setBounds(10, 0, 800, 600);
		jl_fondo.setIcon(imagen_fondo);
		jsp_fondo = new JScrollPane();
		jsp_fondo.setViewportView(jl_fondo);
		jsp_fondo.setBounds(20, 10, 825, 625);

		jtp_fondo.addTab("Plano del estado Actual de las colas",
				imagen_ciudadano, jsp_fondo,
				"Muestra el estado actual de las colas ");
		jtp_fondo.setBounds(10, 30, 820, 640);
		jtp_fondo.setBackground(Color.WHITE);
		add(jtp_fondo);
		
	}
	

public void crear_JLVelocidad()
	{
		jl_velocidad_simulacion = new JLabel(" Velocidad Simulacion :");
		jl_velocidad_simulacion.setBounds(700,5,150,20);
		add(jl_velocidad_simulacion);

		slider = new JSlider(JSlider.HORIZONTAL,0,100,10);
		slider.setBounds(850,5,100,40);
		slider.setMajorTickSpacing(50);
		slider.setPaintTicks(true);//aparecen las barras
		slider.setPaintLabels(true);
		
		add(slider);
		

	}
}
